<html>
 <head>
  <meta charset="UTF-8">
 </head>
 <body>
  <h1 data-lake-id="xWZvg" id="xWZvg"><span data-lake-id="ud46ac1f2" id="ud46ac1f2">典型回答</span></h1>
  <p data-lake-id="u48e92e83" id="u48e92e83"><br></p>
  <p data-lake-id="u7d8bacbf" id="u7d8bacbf"><span data-lake-id="uaa4a4bd4" id="uaa4a4bd4">分布式是针对集中式来说的，先说集中式，集中式系统就是把一整个系统的所有功能，包括数据库等等全部都部署在一起，通过一个整套系统对外提供服务。但是集中式系统存在系统大而复杂、难于维护、容易发生单点故障、扩展性差等问题。而这些问题在分布式系统中可以很好的解决。</span></p>
  <p data-lake-id="u6afb0180" id="u6afb0180"><span data-lake-id="u3600af47" id="u3600af47">​</span><br></p>
  <p data-lake-id="uaa5cb5e4" id="uaa5cb5e4"><span data-lake-id="ua69e4497" id="ua69e4497">分布式就是把一个集中式系统拆分成多个系统，每一个系统单独对外提供部分功能，整个分布式系统整体对外提供一整套服务。对于访问分布式系统的用户来说，感知上就像访问一台计算机一样。</span></p>
  <p data-lake-id="u2432acce" id="u2432acce"><span data-lake-id="u131e7b8e" id="u131e7b8e">​</span><br></p>
  <p data-lake-id="uaa46afc6" id="uaa46afc6"><img src="https://cdn.nlark.com/yuque/0/2023/png/5378072/1685965977384-f8290f63-2a0c-4b21-8af3-046801d1e4d4.png?x-oss-process=image%2Fwatermark%2Ctype_d3F5LW1pY3JvaGVp%2Csize_36%2Ctext_SmF2YSA4IEd1IFA%3D%2Ccolor_FFFFFF%2Cshadow_50%2Ct_80%2Cg_se%2Cx_10%2Cy_10"></p>
  <p data-lake-id="ue21e3537" id="ue21e3537"><span data-lake-id="ua4e0d02e" id="ua4e0d02e">​</span><br></p>
  <p data-lake-id="u2bb9cf46" id="u2bb9cf46" style="text-align: justify"><span data-lake-id="u6d8ea53d" id="u6d8ea53d">分布式意味着可以采用更多的普通计算机（相对于昂贵的大型机）组成分布式集群对外提供服务。计算机越多，CPU、内存、存储资源等也就越多，能够处理的并发访问量也就越大。但是分布式系统中也存在着网络通信延迟、数据一致性等问题。</span></p>
  <p data-lake-id="ua0ff7c25" id="ua0ff7c25"><span data-lake-id="u700cf596" id="u700cf596">​</span><br></p>
  <p data-lake-id="u25bf1324" id="u25bf1324"><span data-lake-id="u2ee4e0ae" id="u2ee4e0ae">拿电商网站来说，我们一般把一个电商网站横向拆分成商品模块、订单模块、购物车模块、消息模块、支付模块等。然后我们把不同的模块部署到不同的机器上，各个模块之间通过远程服务调用(RPC)等方式进行通信。以一个分布式的系统对外提供服务。</span></p>
  <p data-lake-id="u71191c6a" id="u71191c6a"><span data-lake-id="u42b7e41d" id="u42b7e41d">​</span><br></p>
  <p data-lake-id="ue4f8fad4" id="ue4f8fad4"><strong><span data-lake-id="u26b33b3c" id="u26b33b3c">分布式（distributed）</span></strong><span data-lake-id="u55782cbb" id="u55782cbb">是指在多台不同的服务器中部署</span><strong><span data-lake-id="u12b2079d" id="u12b2079d">不同的服务模块</span></strong><span data-lake-id="u4c2705d9" id="u4c2705d9">，通过远程调用协同工作，对外提供服务。</span></p>
  <p data-lake-id="u93ae45bc" id="u93ae45bc"><span data-lake-id="u41bfeedb" id="u41bfeedb">​</span><br></p>
  <p data-lake-id="u6f1829ee" id="u6f1829ee"><strong><span data-lake-id="ua8984e77" id="ua8984e77">集群（cluster）</span></strong><span data-lake-id="uf42cce39" id="uf42cce39">是指在多台不同的服务器中部署</span><strong><span data-lake-id="u8ad64e18" id="u8ad64e18">相同应用或服务模块</span></strong><span data-lake-id="uc52f19fa" id="uc52f19fa">，构成一个集群，通过负载均衡设备对外提供服务。</span></p>
  <p data-lake-id="u855015cc" id="u855015cc"><span data-lake-id="u1aede3eb" id="u1aede3eb">​</span><br></p>
  <p data-lake-id="u972eded8" id="u972eded8"><img src="https://cdn.nlark.com/yuque/0/2023/png/5378072/1685965989531-5ec36e7d-8b83-472a-8d18-6fe0715c13fb.png?x-oss-process=image%2Fwatermark%2Ctype_d3F5LW1pY3JvaGVp%2Csize_34%2Ctext_SmF2YSA4IEd1IFA%3D%2Ccolor_FFFFFF%2Cshadow_50%2Ct_80%2Cg_se%2Cx_10%2Cy_10"></p>
  <p data-lake-id="u248ed3f0" id="u248ed3f0"><span data-lake-id="u32925905" id="u32925905">​</span><br></p>
  <h1 data-lake-id="IH6hn" id="IH6hn"><span data-lake-id="u3ceb1d9f" id="u3ceb1d9f">扩展知识</span></h1>
  <p data-lake-id="u135d5ed5" id="u135d5ed5" style="text-align: justify"><span data-lake-id="u0131152f" id="u0131152f" class="lake-fontsize-12" style="color: rgb(153, 153, 153)">​</span><br></p>
  <h2 data-lake-id="LglpW" id="LglpW"><span data-lake-id="u51f85722" id="u51f85722">分布式系统的特征</span></h2>
  <p data-lake-id="u95005964" id="u95005964"><br></p>
  <p data-lake-id="ued46996c" id="ued46996c"><span data-lake-id="u81254167" id="u81254167">分布式系统需要各个主机之间通信和协调主要通过网络进行，所以，分布式系统中的计算机在空间上几乎没有任何限制，这些计算机可能被放在不同的机柜上，也可能被部署在不同的机房中，还可能在不同的城市中，对于大型的网站甚至可能分布在不同的国家和地区。</span></p>
  <p data-lake-id="u98b4a4ba" id="u98b4a4ba"><span data-lake-id="uaf26a802" id="uaf26a802">​</span><br></p>
  <p data-lake-id="u60d3e02e" id="u60d3e02e"><span data-lake-id="u8a7e35cf" id="u8a7e35cf">但是，无论空间上如何分布，一个标准的分布式系统应该具有以下几个主要特征：</span></p>
  <h3 data-lake-id="FmY5V" id="FmY5V"><span data-lake-id="u51f43188" id="u51f43188">分布性</span></h3>
  <p data-lake-id="ue0f7f628" id="ue0f7f628"><span data-lake-id="u52e7536f" id="u52e7536f">分布式系统中的多台计算机之间在空间位置上可以随意分布，系统中的多台计算机之间没有主、从之分，即没有控制整个系统的主机，也没有受控的从机。</span></p>
  <h3 data-lake-id="bYBQH" id="bYBQH"><span data-lake-id="u0d706a4c" id="u0d706a4c">透明性</span></h3>
  <p data-lake-id="u4deb9e7a" id="u4deb9e7a"><span data-lake-id="u1987f28b" id="u1987f28b">系统资源被所有计算机共享。每台计算机的用户不仅可以使用本机的资源，还可以使用本分布式系统中其他计算机的资源(包括CPU、文件、打印机等)。</span></p>
  <h3 data-lake-id="uXfxD" id="uXfxD"><span data-lake-id="u3b70efa7" id="u3b70efa7">同一性</span></h3>
  <p data-lake-id="u1ac9fa1b" id="u1ac9fa1b"><span data-lake-id="u7afe96da" id="u7afe96da">系统中的若干台计算机可以互相协作来完成一个共同的任务，或者说一个程序可以分布在几台计算机上并行地运行。</span></p>
  <h3 data-lake-id="EQDzW" id="EQDzW"><span data-lake-id="u898793a6" id="u898793a6">通信性</span></h3>
  <p data-lake-id="u6ce9e8ac" id="u6ce9e8ac"><br></p>
  <p data-lake-id="u3662768e" id="u3662768e"><span data-lake-id="u25d21d41" id="u25d21d41">系统中任意两台计算机都可以通过通信来交换信息。</span></p>
  <p data-lake-id="u75768e2d" id="u75768e2d" style="text-align: justify"><span data-lake-id="u2c42c17a" id="u2c42c17a" class="lake-fontsize-12" style="color: rgb(153, 153, 153)">​</span><br></p>
  <p data-lake-id="u686a0aa4" id="u686a0aa4" style="text-align: justify"><span data-lake-id="u018862fe" id="u018862fe" class="lake-fontsize-12" style="color: rgb(85, 85, 85)">和集中式系统相比，分布式系统的性价比更高、处理能力更强、可靠性更高、也有很好的扩展性。但是，分布式在解决了网站的高并发问题的同时也带来了一些其他问题。首先，分布式的必要条件就是网络，这可能对性能甚至服务能力造成一定的影响。其次，一个集群中的服务器数量越多，服务器宕机的概率也就越大。另外，由于服务在集群中分布式部署，用户的请求只会落到其中一台机器上，所以，一旦处理不好就很容易产生数据一致性问题。</span></p>
  <p data-lake-id="ua3eca0db" id="ua3eca0db"><br></p>
  <p data-lake-id="ufbb8d97b" id="ufbb8d97b"><br></p>
  <p data-lake-id="ub719c985" id="ub719c985" style="text-align: justify"><br></p>
  <p data-lake-id="u1c724352" id="u1c724352"><span data-lake-id="u42a78fc7" id="u42a78fc7"><br><br></span></p>
 </body>
</html>